
#ifndef SX_ANIMATION_STUDIO_H
#define SX_ANIMATION_STUDIO_H

#include <QtGui/QMainWindow>
#include "ui_AnimationStudio.h"

/* Main Includes */
#include <sxQViewportFrameLayout.h>
#include <sxOpenGL_Context.h>
#include <sxQOpenGL_Viewport.h>
#include <sxSceneController.h>

/* Sx Library Types */
using Sx::QtInterface::QViewportFrameLayout;
using Sx::Interface::SceneController;

/* OpenGL Support */
using Sx::OpenGL::Graphics::Contexts::OpenGL_Context;

namespace Sx {

class AnimationStudio : public QMainWindow {
	Q_OBJECT

public:
	AnimationStudio(QWidget *parent = 0, Qt::WFlags flags = 0);
	~AnimationStudio();

private:
	Ui::AnimationStudioClass ui;

	/* OpenGL Context */
	std::shared_ptr<OpenGL_Context> openglContext;
	Util::ArrayList<std::shared_ptr<SceneController> > sceneControllers;

	/* POINTER_OWNERSHIP: NO (Qt Handles QWidgets) */
	QViewportFrameLayout* squareLayout;

	/* Helper-Function that defines how the main interface is constructed. */
	bool constructInterface();
	bool constructMainLayout();
	bool constructConsoles();
};

}

#endif
